package com.zhku.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhku.base.model.PageParams;
import com.zhku.base.model.PageResult;
import com.zhku.user.model.dto.Login;
import com.zhku.user.model.dto.QueryUserParamsDto;
import com.zhku.user.model.dto.UpdateUserAsShopDto;
import com.zhku.user.model.dto.UserDto;
import com.zhku.user.model.po.TtUser;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author itcast
 * @since 2023-12-18
 */
public interface TtUserService extends IService<TtUser> {

    /**
     * 通用用户登录
     * @param login 登录参数
     * @return
     */
    public TtUser commonLogin(Login login);

    /**
     * 商家用户登录
     * @param login 登录参数
     * @return
     */
    public TtUser shopLogin(Login login);

    /**
     * 管理端登录
     * @param login 登录参数
     * @return
     */
    public TtUser adminLogin(Login login);

    /**
     * 获取用户个人信息
     * @param userId 用户Id
     * @return
     */
    public TtUser getUserByUserId(String userId);

    /**
     * 修改用户个人信息
     * @param ttUser 新的用户个人信息
     * @return
     */
    public TtUser updateUser(TtUser ttUser);

    /**
     * 用户注册
     * @param userDto 用户注册信息
     * @return
     */
    public TtUser createUser(UserDto userDto);

    /**
     * 用户信息分页查询
     * @param pageParams 分页查询的参数
     * @param queryUserParamsDto 分页查询的条件
     * @return 返回的查询结果
     */
    public PageResult<TtUser> queryUserList(PageParams pageParams, QueryUserParamsDto queryUserParamsDto);

    /**
     * 删除用户
     * @param id
     */
    public void deleteUser(String id);

    /**
     * 分页查询某店铺下有哪些员工
     * @param pageParams
     * @param id 店铺id
     * @return
     */
    public PageResult<TtUser> queryShopUserList(PageParams pageParams, String id);

    /**
     * 总查询店铺下有哪些员工
     * @param id 店铺id
     * @return
     */
    public List<TtUser> queryShopUserList(String id);

    /**
     * 将指定的用户所关联的店铺修改为空
     * @param id 用户id
     * @return
     */
    public TtUser updateUserShop(String id);

    /**
     * 将指定的用户修改为某个店铺下的员工
     * @param dto
     * @return
     */
    TtUser updateUserAsShop(UpdateUserAsShopDto dto);

    /**
     * 运营端启用用户
     * @param id
     */
    void regainUser(String id);
}
